<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" charset="utf-8">
        //Array each方法
        //ECMA forEach方法,只适合遍历一维数组
//        var arr = [1,2,3,4,5];
//        arr.forEach(function (item,index,array) {
//            alert(item);
//        })
        var arr = [1,2,3,[4,[5,[6]]]];
        //自己实现一个Array each方法能遍历多维数组
        Array.prototype.each = function (fn) {
            try {
                /**
                 * 遍历数组每一项，记录当前遍历的元素位置
                 */
                 this.i || (this.i=0);
                 if(this.length>0 && fn.constructor==Function){
                     //循环遍历数组的每一项
                     while (this.i<this.length){
                         var e =  this[this.i];
                         //如果当前元素获取到了，并且当前元素是一个数组
                         if(e && e.constructor==Array){
                             e.each(fn);
                         }else{
                             //把数组的当前元素传递给fn函数，并让函数执行。
                             //fn.apply(e,[e]);
                             fn.call(e,e);
                         }
                         this.i++;
                     }
                     //释放内存，垃圾回收机制回收变量
                     this.i = null;
                 }
            } catch (ex){
            }
            return this;
        }
        arr.each(function (item) {
            alert(item);
        })
    </script>
</head>
<body>
</body>
</html>